<?php
class CP_ProductCategoriesController extends XPHP_Controller
{
	/**
	 * Phương thức sẽ thực thi trước khi thực thi sau khi controller được khởi tạo
	 */
	public function _init()
	{
		//Load layout
		$this->loadLayout("Administrator");
		//Xác thực
		$this->helper->auth();
	}
	
	public function indexAction()
	{
		$model = new Areas_CP_Models_ProductCategories();
		$arrCategories = $model->select_all();
		
		//Sắp xếp danh mục cha con
		$arrData = array();
		foreach ($arrCategories as $key => $item)
		{
			if ($item['parentID'] == 0)
			{
				$arrData[$key] = $item;
				foreach ($arrCategories as $key2 => $item2) {
					if ($item2['parentID'] == $item['id'])
						$arrData[$key2] = $item2;
				}
			}
		}
		$this->view->arrCategories = $arrData;

		return $this->view();
	}
	
	/**
	 * [[
	 * model: Areas_CP_Models_ProductCategories
	 * ]]
	 */
	public function createAction()
	{
		//Lấy danh sách danh mục cha
		$model = new Areas_CP_Models_ProductCategories();
		$arrParents = $model->select_all('parentID=0');
		$arrData = array();
		$arrData[0]['id'] = 0;
		$arrData[0]['name'] = "Không thuộc danh mục cha";
		foreach ($arrParents as $key => $item)
		{
			$arrData[$key] = $item;
		}
		$this->view->arrParents = $arrData;
		
		return $this->view();
	}
	
	/**
	 * [[
	 * model: Areas_CP_Models_ProductCategories
	 * ]]
	 */
	public function createPOST()
	{
		if ($this->hasModel())
		{
			if ($this->model->isValid())
			{
				//Kiểm tra danh mục đã có chưa
				$model = new Areas_CP_Models_ProductCategories();
				$data = $model->select("name='".$this->model->name."'");
				if (!empty($data))
				{
					//Thông báo danh mục đã tồn tại
					$this->model->setErrorMessage("unique", "Tên danh mục đã tồn tại", "name");
				}
				else 
				{
					$this->model->insert();
					//RedirectResult tới action index
					return $this->redirect("index");
				}
			}
		}
	}

	public function editAction($args)
	{
		$model = new Areas_CP_Models_ProductCategories($args[0]);
		
		//Lấy danh sách danh mục cha
		$arrParents = $model->select_all('parentID=0');
		$arrData = array();
		$arrData[0]['id'] = 0;
		$arrData[0]['name'] = "Không thuộc danh mục cha";
		foreach ($arrParents as $key => $item)
		{
			$arrData[$key] = $item;
		}
		$this->view->arrParents = $arrData;
		
		return $this->view($model);
	}
	
	/**
	 * [[
	 * model: Areas_CP_Models_ProductCategories
	 * ]]
	 */
	public function editPOST()
	{
		if ($this->hasModel())
		{
			if ($this->model->isValid())
			{
				//Kiểm tra danh mục đã có chưa
				$model = new Areas_CP_Models_ProductCategories();
				$data = $model->select("name='".$this->model->name."' AND id <> '".$this->model->id."'");
				if (!empty($data))
				{
					//Thông báo danh mục đã tồn tại
					$this->model->setErrorMessage("unique", "Tên danh mục đã tồn tại", "name");
				}
				else 
				{
					$this->model->update();
					//RedirectResult tới action index
					return $this->redirect("index");
				}
			}
		}
	}
	
	public function deleteAJAX($args)
	{
		$id = $this->params['id'];
		$model = new Areas_CP_Models_ProductCategories($id);
		$model->delete();
		return $this->json(array("success" => true));
	}
}